<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="zh-CN">
<head profile="http://gmpg.org/xfn/11">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>随机显示唐诗300首之一</title>
</head>
<body>
<?php
//唐诗来源： http://code.google.com/p/chinese-fortune/
@ $fb = fopen("tang300",'rb',TRUE);
if (!$fb)
{
	echo "<p>I can't open this file.<p>";
	exit;
}
//fpassthru($fb);
$n = 0;
while (!feof($fb))
{
	$tang = fgets($fb, 999);
	//echo $tang.'<br />';
	if ( ereg('[%]', $tang) )
		$n++;
}
echo 'We have '.$n.' 首唐诗。<br />';
$rand_num = rand(1, $n);
// fclose($fb);
?>
<?php
// 显示第3首诗($num=2)
/*$str = '';
$str_1 = '卧室第一个地租';
for ($n=0; $n<=5; $n++) {
	$str = $str.$str_1.'<br />';
	if ($n != 6)
		if($n == 3)
			break;
}
echo $str.'<hr>';
$str = '56478';
echo $str;*/
/* //第一个版本
$str='';
rewind($fb);
for($num = 1; !feof($fb); ) {
	$tang = fgets($fb,999);
	if (ereg('[%]',$tang)) { //如果包含%，则诗歌号加一
		$num++;
		if ($num == $rand_num )
			break; //得到该首诗
		else 
			$str= ''; //继续置空
	}
	else 
		$str = $str.$tang.'<br />';
//	echo '<'.$num.'>'.$str;
}
echo $str;
fclose($fb);
*/
// 第二个版本，使用rewind、fseek、ftell、fread
// 第17首，测试   chr(27) |  
rewind($fb); //复位文件指针
$begin = $end = 0; 
for($num = 0; !feof($fb); ) {
	$tang = fgets($fb,999);
	if (ereg('[%]',$tang)) { //如果包含%，则诗歌号加一
		$num++;
		//$end = ftell($fb); //得到文件指针位置
		if ($num == $rand_num ) {
			$end = ftell($fb);
			break; //得到该首诗
		}
		else
			$begin = ftell($fb);			 
	}
}

$bb=$end - $begin;
fseek($fb, $begin, SEEK_SET);
//echo fgets($fb,999);
$str = fread($fb, $bb);
echo '$begin = '.$begin.'<br />$end = '.$end.'<br />$bb = '.$bb.'<br />'.$str;
fclose($fb);  //这里得到具体的那首诗的字符串，OK
//
echo "<br /><br /><br />这就是切过后的东西了： <br />";
$result = split('<br />',nl2br($str));
while (list($key, $value) = each($result)) {
	echo '$key('.$key.'): '.$value.'+'.strlen($value).'<br />';
}

/*//if (ereg(chr(10),$str))
//	echo "OH Y~~~".chr(10);
$result = split(chr(10), $str); //chr(13) CR "\t" | chr(10) LF "\n" | chr(27) ESC
echo '<br />元素个数：  '.count($result).'<br />';
while (list($key, $value) = each($result)) {
	echo '$key('.$key.'): '.$value.'+'.strlen($value).'<br />';
	if ($key == 6) {
		for ($j=0; $j<strlen($value); $j++)
			for ($i = 0; $i<512; $i++) {
				if ($value[$j] == chr($i))
					echo '$value['.$j.']='.$value[$j].'__'.$i.'<br />';
			}
	}
}
*/
?>

<h2>显示随机数</h2>
<?php
//0-9 10数，取任意5个，且不能有相同数出现
echo rand(0,9);
$num = 5;//要产生多少个随机数;
$start = 0;//随机数起始位置,
$end = 9;//随机数结束位置
$connt = 0;
while($connt<$num)
{
        $a[ ]=rand($start,$end);//产生随机数
        $ary=array_unique($a);//遍历数组$a，如有相同的值则剔除该值
        $connt=count($ary);
}

foreach ($ary as $key => $value)
{
        echo "<br />".$value;
}

?>  
</body>
</html>